12

» WarCraft 3 / Убрать эффект телепортации

Если тебе не нужно чтобы портал переммещал, то либо убери способность, либо поставь новые порталы без областей
12

» WarCraft 3 / Конвертировать ID юнита в саммого юнита (wurst)

quq_CCCP:
GetObjectName не?
Спасибо

quq_CCCP:
GetObjectName не?
И такой ещё вопрос, возможно ли получить описание юнита?
12

» WarCraft 3 / Убрать эффект телепортации

На сколько я помню портал телепортирует не способностью, а по областям, по крайней мере я так добавлял в свою карту портал.
Загруженные файлы
12

» WarCraft 3 / wurst билд карты

GetLocalPlayer:
Карта сохраняется в папке _build с именем WurstRunMap если запущено с командой Run Map, либо именем, указанным в файле wurst.build, если производилась сборка командой Build.
Так же можно заглянуть в папку самого компилятора за логами компиляции (Мой Компуктер/Users/ИмяПользователя/.Wurst/Logs/compiler.log).
Я уже понял в чём проблема. Я опять забыл пропустить карту через ран, перед билдом и сидел тупо несколько часов))))
12

» WarCraft 3 / wurst.startmap' not found как исправить?

Феникс:
Стас Орлов, отражать суть и относиться - это разные вещи, заголовки находятся в гугле, если новичок столкнется с такой же проблемой, он наткнется на твой вопрос, где будет решение его проблемы.
Также обрати внимание на бота, он выдает результаты по совпадению заголовков, очень важно, чтобы заголовки были как можно точнее
В следующий раз буду конкретнее
12

» WarCraft 3 / wurst.startmap' not found как исправить?

Феникс:
Я скоро начну бить тебя по рукам, чтобы ты не создавал вопросы с заголовком, не отражающим их суть.
Так разве это не относиться к теме заголовка?
12

» WarCraft 3 / Изменение данных через WPQ editor

Steal nerves:
Нашёл, то что файл открывается только для чтения, как это изменить?
Excel норм не открывает?
Я нашёл проблему, автоматом ставился режим чтения, но теперь при попытке изменить пишет параметр задан неверно
12

» WarCraft 3 / Открыть карту

Ельнур:
Стас Орлов:
Всё, я разобрался кажеться
в чем дело не поделишься
Там четвёртый уровень защиты был и только потом картв открылась, правда толку в этом не много оказалось
12

» WarCraft 3 / Карта не открывается

konvan5:
Такое происходит. когда сохранение карты было прервано. Например кликнул сохранить и выключил комп или редактор недождавшись, пока оно сохранит.
Да, работа коту под хвост, делай бекапы чаще(

И еще 1 момент, на какой версии варика ты разрабатывал и на какой версии решил открыть?
Если разрабатывал в рефордже а потом решил открыть в стандартном варике - то тоже будет выдавать подобную ошибку.
Делаю на 1.26. Теперь понятно в чём проблемма. Комп отрубился, и видимо карта не успела сохраниться. Ну что же, сегодня явно не мой день
12

» WarCraft 3 / Миникарта

quq_CCCP:
Camera Bounds не локальные, это границы обзора, их юзают 100500 бж констант, по ним определяется границы в пределах которых ты можешь двигать игровую камеру. Что ты собрался спрятать на миникарте? Есть способ менять иконки юнитам на пустые, есть соответствующая нативка.

Ну и самый радикальный метод - режим киниматика, там пропадает интерфейс целиком, но вроде можно было сделать чтобы курсор остался и возможность контроля.
Предположим, что это лабиринт. И как написал человек сверху размер отображения миникарты поставить на размер того, что попадает в один экран. Такое сделать возможно?
12

» WarCraft 3 / Таймер

Bergi_Bear:
Вот тоже самое на lua, не планируете перейти?
function Trig_Pet_death_1_Actions()
	local u=GetTriggerUnit()
	TimerStart(CreateTimer(), 1.00, false, function()
		ForGroupBJ( GetUnitsOfPlayerAll(GetOwningPlayer(u)), function()
			IssueImmediateOrderBJ(GetEnumUnit(), "taunt" )
		end)
	end)
end

нет хештаблиц, нет хендлов, нет обнулений, ну я забыл дописать DestroyTimer и сама ForGroupBJ плоха, но не важно
А где найти туториалы по Луа?
12

» WarCraft 3 / Таймер

quq_CCCP:
Ага, только ты сделал бездумно. Таймер то и течёт, а откуда тебя будет браться GetTriggerUnit?потом ты откуда то копировал этот код, но не разобрался как он работает.
Я копировал из своей карты. Я кинул не весь код триггера, а только кусок с тайиером. До этого там был использован вейтЮ я решил заменить на таймер и запутался.
12

» WarCraft 3 / Помогите с созданием ловушки

Самый банальный вариант: взять колдовскую ловушку и поменять анимацию стана на анимацию ловчего. Единственный минус, что это будет стан, а не сетка.
12

» WarCraft 3 / Нужна помощь с триггером

Ну смотри есть несколько вариантов.
Первый самый очевидный: ты делаешь эту способность на гуи без использования локальных переменных, что может привести к конфликту. Т.к. последний созданный юнит(и прочее со словом последний или в других его интерпритациях) на гуи - проверяет по всей карте, банально может совпасть и где-то создаётся другой юнит в тот момент, когда появляется твой и триггер багает.
Второй вариант: советую попробовать поставить задержку в цикле на секунду или даже меньше. Возможно проблема в том, что происходит слишком много действий за короткий промежуток времени.
Это самые очевидные варианты, попробуй их.
12

» WarCraft 3 / Таймер вместо вейта

Смотри, тут всё просто. Ошибка в том, что сам приказ вейт плохо работает(сам на нём много раз попадался. Всё что тебе нужно это хеш таблица в карте.
function Timer takes takes nothing returns nothing
local timer t = GetExpiredTimer() создаём локальную переменную таймера и присваеваем ей истёкший таймер
local integer id = GetHandleId(t) узнаём id этого таймера
local unit test = LoadUnitHandle(udg_hash, id, 1) загружаем юнита-цель, если это нужный таймер(id васё определит)
call UnitAddSleepPerm( test, false ) будим нужного юнита
endfunction
function Trig_Test_Actions takes nothing returns nothing
local timer t = CreateTimer() создаём локальный таймер
local integer id = GetHandleId(t) находим id таймера
local unit test = GetSpellTargetUnit() берём юнита-цель способности
TimerStart(t, 10, false, Timer) создаём таймер на 10 сек и активируем функцию по истечению тайсера
call UnitAddSleepPerm( test, true ) приказваем юнита-цель уснуть
SaveUnitHandle(udg_hash, id, 1, test) сохраняем юнита-цель в таблице по id таймера
endfunction
Примерно так, тебе нужно только поменять приказы и всё. И добавить хеш таблицу, если её нет.
12

» WarCraft 3 / Магическая атака

Я уже разобрался со способностью, изначально не правильно понял её описание.
12

» WarCraft 3 / Сохранение приказа

Bergi_Bear:
Ну чтобы идти куда-то надо использовать IssuePointOrder(unit,x,y,"move") и вызывать эту функцию по таймеру каждые n секунд, если текущий приказ отличается от "move", то снова вызывать, и ждать через IsUnitInRangeXY когда юнит дойдёт до цели, полезная штука чтобы юнит дошёл куда либо если его например оглушили или сдвинули или воскресили после смерти.
Могу показать только на луа, там без хештаблиц и пару строк кода всего
Я делаю на джасс. У меня ТД и юнит сперва движеться, потом может остановиться и применить способность или сражаться с кем-то. И мне нужно сохранить отданный приказ, что бы он пошёл снова, даже при у чёте, что его например телепортируют. А двигаются юниты через области. Так что движение через точку на карти не канает.
12

» WarCraft 3 / Сохранение приказа

Bergi_Bear:
Да.. либо по ID либо через строку
А как это сделать? Можно пример кода? Допустим есть действе идти туда-то. Спустя 2 секунды повторить этот приказ. В какую переменную сохранять этот приказ и как потом заставить его выполнить потом?
12

» WarCraft 3 / таймер

quq_CCCP:
У твоего триггера события нету, у тебя же нет отдельной ситсмы как у меня в карте которая следит за всеми юнитами на карте и когда они кастуют спеллы ищет в бд фунцию спелла и вызвает её. Так что все ручками, дебаг сообщения так же не мешает сделать.
quq_CCCP:
У твоего триггера события нету, у тебя же нет отдельной ситсмы как у меня в карте которая следит за всеми юнитами на карте и когда они кастуют спеллы ищет в бд фунцию спелла и вызвает её. Так что все ручками, дебаг сообщения так же не мешает сделать.
Я правильно понимаю, что это работать будет примерно так: юнит применяет способность и активирует триггер, если это нужная сопосбности то идёт работа. На юнита навешивается щит и записывается его показатель как реальная, потом (я до конца не понял как) высчитывается урон, который проходит в момент нанесения, а не в момент "юнит атакова" после чего даются бонусные за, а потом восстанавливаются до нужного размера.поэтому осталось всего пара вопросов. Первый, я так и не понял, как высчитать урон в момент атаки. Второй хватит ли одного события, что бы заработали все триггеры, или же нужно несколько событий, но как указать, что бы выполнялись конкретные действия?
12

» WarCraft 3 / таймер

quq_CCCP:
У тебя ошибка, фукнкцию которую ты хочешь вызвать должна находится выше места вызова.
Unholy_Shield_End должна быть описана выше чем Sosdanie_Shita_Act1

Ну и вовсе, тебе нужен не хендл ид юнита а таймера,ибо сохранять ты данные должен на таймер а не на юнита, когда таймер истечет и вызовет функцию, внутри этой функции у тебя будет работать функция GetExpiredTimer() - которая вернет тот таймер, который запустил эту функцию, это единственный обьект связывающий твой триггер и функцию Unholy_Shield_End, и разумеется GetTriggerUnit() - не будет работать в потоке таймера, т.к это функция реакция на событие триггера. Ты походу копипастишь код совершенно не вникая в принципы его работы.
Я это уже после того, как спросил понял и поменял код, однако он всё равно не хочет работать.
function Unholy_Shield_Cast_Cond1 takes nothing returns boolean условие первое для проверки способности
return GetSpellAbilityId() == 'A00V'
endfunction
function Unholy_Shield_End takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer h = GetHandleId(t)
local unit attacked = LoadUnitHandle(udg_hash,h,1)
call UnitRemoveBuffBJ( 'B009', attacked )
endfunction
function Sosdanie_Shita_Act1 takes nothing returns nothing
local real shieldBlock = 150.00 Число, которое показывает колличество блокируемого урона
local unit w = GetSpellTargetUnit() Юнит, на которого повешен щит
local timer t = CreateTimer ()
local integer h = GetHandleId(w) узнаём ID юнита на которого повесили щит
local integer j = GetHandleId(t) Узнаём ID таймера конца
local real time = 3.00
call TimerStart (t, time, false, function Unholy_Shield_End)
call SaveUnitHandle(udg_hash,j,1,w) Записываем юнита для таймера
call SaveReal(udg_hash,h,2, shieldBlock)
call SaveUnitHandle(udg_hash,h,1,w) Записываем юнита, на которого повеслили щит
set t = null
set w = null
endfunction
===========================================================================
function InitTrig_Unholy_shield_Jass takes nothing returns nothing
set gg_trg_Unholy_shield_Jass = CreateTrigger( )
call TriggerAddAction (gg_trg_Unholy_shield_Jass, function Sosdanie_Shita_Act1)
call TriggerAddCondition( gg_trg_Unholy_shield_Jass, Condition( function Unholy_Shield_Cast_Cond1 ) )
endfunction
Заклинание с юнита не убирается, почему? Вроде бы всё написал...